import http, { HttpResponse } from '../http'

// 请求参数 - 查询内容
export interface GoodsListSearchParams {
    /** @description 商品名称 */
    goodsName: string
    /** @description 商品编码 */
    goodsCode: string
    /** @description 商品分类 id */
    goodsClassId: number | null
}

// 商品分类
export enum GoodsClassEnum {
    '光甘草系列' = 1,
    '仙人掌系列' = 2,
    '山参系列' = 3,
    '氨基酸系列' = 4,
    '松露系列' = 5
}

// 图片信息
interface GoodsImgUrl {
    /** @description 图片名称 */
    name: string
    /** @description 图片路径 */
    url: string
}

// 配送方式 1 上门自提 2 快递
type GoodsDelivery = 1 | 2
// 是否限购 0 不限购 1 限购
type IsLimitBuy = 0 | 1
// 是否需要运费 0 不需要 1 徐娅萍
type IsNeedFreight = 0 | 1
// 商品状态 1 已上架 2 待上架 3 已下架
type ListingType = 1 | 2 | 3

// 请求参数 - 添加商品
export interface GoodDetailData {
    /** @description 商品名称 */
    goodsName: string
    /** @description 商品简介 */
    goodsDesc: string
    /** @description 商品卖点 */
    goodsPoints: string
    /** @description 商品分类 */
    goodsClassId: number | null
    /** @description 商品图片 */
    goodsImageList: GoodsImgUrl[]
    /** @description 商品详情 */
    goodsDetail: string
    /** @description 商品价格 */
    goodsPrice: string
    /** @description 商品库存 */
    goodsStock: string
    /** @description 商品划线价 */
    goodsOriginalPrice: string
    /** @description 商品长度 */
    goodsLength: string
    /** @description 商品宽度 */
    goodsWidth: string
    /** @description 商品高度 */
    goodsHeight: string
    /** @description 商品重量 */
    goodsWeight: string
    /** @description 配送方式 */
    goodsDelivery: GoodsDelivery | null
    /** @description 是否需要运费 */
    isNeedFreight: boolean | IsNeedFreight
    /** @description 运费 */
    expressFreight: number | null
    /** @description 商品是否限购 */
    isLimitBuy: boolean | IsLimitBuy
    /** @description 商品限购数量 */
    limitBuyNum: string
    /** @description 商品状态 */
    listingType: ListingType | null
    /** @description 上架时间 */
    listingTime: string
}

// 添加商品
export const httpAddGoods = (params: any): Promise<HttpResponse> => http('post', '/goods/addGoods', params)

// 更新商品
export const httpUpdateGoods = (params: GoodsDetailResultData): Promise<HttpResponse> => http('post', '/goods/updateGoodsStatus', params)

// 删除商品
export const httpDeleteGoods = (params: { goodsId: number }): Promise<HttpResponse> => http('delete', '/goods/deleteGoods', params)

// 商品列表
export const httpGoodsList = (params: any): Promise<HttpResponse> => http('post', '/goods/goodsList', params)

// 返回数据，商品详情
export interface GoodsDetailResultData extends GoodDetailData {
    /** @description 商品 id */
    goodsId: number
    /** @description 商品编码 */
    goodsCode: string
    /** @description 创建时间 */
    createdTime: number
    /** @description 商品销量 */
    goodsSales: number
}

// 返回结果 - 商品详情
export interface GoodsDetailResult extends HttpResponse {
    data: GoodsDetailResultData
}

// 商品详情
export const httpGoodsDetail = (params: { goodsId: number }): Promise<GoodsDetailResult> => http('get', '/goods/goodsDetail', params)

// 返回结果 - 商品类型
export interface GoodsClass {
    /** @description 商品类型 id */
    goodsClassId: number
    /** @description 商品类型名称 */
    goodsClassName: string
}

// 返回结果 - 商品类型
interface GoodsClassListResult extends HttpResponse {
    data: {
        list: GoodsClass[]
    }
}

// 获取商品类型列表
export const httpGoodsClassList = (): Promise<GoodsClassListResult> => http('get', '/goodsClass/goodsClassList')

// 新增商品类型
export const httpAddGoodsClass = (params: { goodsClassName: string }): Promise<HttpResponse> => http('post', '/goodsClass/addGoodsClass', params)

// 删除商品类型
export const httpDeleteGoodsClass = (params: { goodsClassId: number }): Promise<HttpResponse> => http('delete', '/goodsClass/deleteGoodsClass', params)
